import numpy as np

# 广播
# 广播是指NumPy在算术运算期间处理不同形状的数组的能力。
# 对数组的算术运算通常在相应的元素上进行。
# 如果两个阵列具有完全相同的形状，这些操作就会被无缝执行。


"""
如果满足以下规则，就可以进行广播：
　ndim较小的数组会在前面追加一个长度为1的维度。
  输出数组的每个维度的大小是输入数组该维度大小的最大值。
　若输入数组的某个维度的长度为1时，则沿着此维度运算时都用此维度上的第一组值。
　若输入的某个维度大小为1，则该维度中的第一个数据元素将用于该维度的所有计算。
如果上述规则产生有效结果，并且满足以下条件之一，那么数组被称为可广播的。
　数组拥有相同形状。
  数组拥有相同的维数，每个维度拥有相同长度，或者长度为1。
　数组拥有极少的维度，可以在其前面追加长度为1的维度，使上述条件成立。
"""


a = np.array([1, 2, 3, 4])
b = np.array([10, 20, 30, 40])
c = a * b
print(c)  # [ 10  40  90 160]
print()


a = np.array([[0, 0, 0], [10, 10, 10], [20, 20, 20], [30, 30, 30]])
b = np.array([1, 2, 3])
c = a + b
print("第一个数组：")
print(a)
print()
print("第二个数组：")
print(b)
print()
print("第三个数组：")
print(c)
print()
